/**
 * 购物车 mapper 接口，继承自 CoreMapper
 * 用于处理与购物车相关的数据库操作
 */
package co.yixiang.modules.cart.service.mapper;

import co.yixiang.common.mapper.CoreMapper;
import co.yixiang.modules.cart.domain.YxStoreCart;
import co.yixiang.modules.order.service.dto.CountDto;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 购物车 mapper 接口，用于处理与购物车相关的数据库操作
 */
@Repository
public interface StoreCartMapper extends CoreMapper<YxStoreCart> {

    /**
     * 计算用户的购物车中未支付、未删除、非新品的商品总数
     *
     * @param uid 用户ID
     * @return 商品总数
     */
    @Select("select IFNULL(sum(cart_num),0) from yx_store_cart " +
            "where is_pay=0 and is_del=0 and is_new=0 and uid=#{uid}")
    int cartSum(@Param("uid") Long uid);

    /**
     * 查询已支付订单中商品的分类名称
     *
     * @return 分类名称列表
     */
    @Select("SELECT t.cate_name as catename from yx_store_cart c  " +
            "LEFT JOIN yx_store_product p on c.product_id = p.id  " +
            "LEFT JOIN yx_store_category t on p.cate_id = t.id " +
            "WHERE c.is_pay = 1")
    List<CountDto> findCateName();
}
